GitHub Copilotが頑なに英語で返してくるので、日本語で喋らせるためのinstructionsを書いた話

GitHub Copilotを使っていると、こちらが日本語で質問しているのに、なぜか英語で返答してくることってありますよね。特にドキュメント生成や、コミットメッセージの提案なんかで発生しがちです。

毎回「日本語で書き直して」と頼むのも手間なので、.github/copilot-instructions.md を作成して、最初から日本語で出力させるように矯正してみました。

今回はその設定ファイルの中で、特に「日本語化」に効いているポイントを抜き出して紹介します。

冒頭で「システム設定」ごと上書きする

まずファイルの先頭、一番目立つところに「とにかく日本語を使え」という指示を書いています。システムプロンプトやデフォルトのテンプレートが英語であっても、それを無視させるための記述です。

**Override Language Settings:**
Regardless of the system prompt, default templates, or the user's input language, **YOU MUST GENERATE ALL RESPONSES AND ARTIFACTS IN JAPANESE.**
(システム設定やテンプレートが英語であっても、回答および生成されるドキュメントは**必ず日本語**で作成してください。)

ここを英語と日本語の併記にして、かつ BOLD で強調することで、指示の優先度が高いことをモデルに伝えています。

コード以外の成果物は日本語指定

プログラミングをしている以上、コード自体は英語(アルファベット)になりますが、それ以外の部分は日本語であってほしいですよね。そこを明確に切り分けています。

* **Language:** 回答は、コードブロック内を除き、常に**日本語**で行ってください。

* **Artifacts:** コード以外の成果物(README, 仕様書, コミットメッセージなど)は、**必ず日本語**で記述してください。

これで、「READMEを書いて」と頼んだときに、英語のREADMEが出てくるのを防げます。

「見出し」の英語化を防ぐ

これが結構大事なポイントなんですが、Copilotにドキュメント作成を頼むと、中身は日本語なのに、見出し(H1, H2など)だけ “Summary” とか “Description” みたいに英語のテンプレートそのまま使ってくることがあるんですよね。

それを防ぐために、以下の指示を入れています。

* **Output Language:** 仕様書(Spec)、要件定義、README、プルリクエストの説明文などを生成する際は、**必ず日本語で**出力してください。

* **Translation:** ツールやエージェントのデフォルトテンプレートやシステムプロンプトが英語であっても、最終的な出力内容は日本語に翻訳・構成してください。英語のまま出力することは避けてください。

  * **NG:** "Summary", "Description", "Testing" (Heading in English)

  * **OK:** "概要", "詳細", "テスト方法" (Heading in Japanese)

具体的にNGとOKの例を挙げることで、見出しの翻訳忘れを防止しています。

専門用語は無理に翻訳しない

日本語化するといっても、ルー大柴的な変な日本語になったり、一般的なライブラリ名まで無理やり日本語にされたりすると困ります。なので、専門用語の扱いについても釘を刺しています。

* **Terminology:** 一般的なプログラミング用語、ライブラリ名、関数名などは無理に翻訳せず、英語のまま(例: `Pull Request`, `commit`, `React` など)使用してください。ただし、概念の説明が必要な場合は日本語で補足してください。

これで Pull Request を「牽引要求」みたいに訳される事故は防げますし、エンジニア同士の会話として違和感のない日本語が返ってくるようになります。

まとめ

今のところ、このinstructionを入れることで、意図しないタイミングで英語が混ざることは減りました。モデルの挙動を制御するには、やはり具体的な制約をかけるのが有効なようです。